import { Module } from '@nestjs/common';
import { MysqlService } from './mysql.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from './entity/user.entity';
// import { SnakeNamingStrategy } from './naming-strategy';
@Module({
  imports: [
    TypeOrmModule.forRootAsync({
      useFactory: () => ({
        // 这里应该返回一个与mysqlProviders中相同的配置对象，但不需要使用useFactory
        // 您可以根据需要调整配置
        type: 'mysql',
        host: process.env.MYSQL_SERVER,
        port: Number(process.env.MYSQL_PORT),
        username: process.env.MYSQL_USER,
        password: process.env.MYSQL_PASS,
        database: process.env.MYSQL_DBNAME, // 或者 process.env.MYSQL_DBNAME
        entities: [__dirname + '/entity/*.entity{.ts,.js}'],
        synchronize: true,
        // namingStrategy: new SnakeNamingStrategy(),
        // // 启用连接池
        // pool: {
        //   min: 2, // 连接池中的最小连接数
        //   max: 50, // 连接池中的最大连接数
        //   acquire: 30000, // 获取连接时等待的最大毫秒数，如果超过这个时间还没有可用连接，则会抛出错误
        //   idle: 10000, // 连接被释放回池之前允许空闲的最大毫秒数
        // },
      }),
      // 如果需要，可以添加其他选项，如inject等
    }),
    TypeOrmModule.forFeature([User]),
  ],
  providers: [MysqlService],
  exports: [MysqlService],
})
export class MysqlModule {}
